home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / programs_-_include / LINUX / NFSD / SYSCALL.H < prev    next >
C/C++ Source or Header  |  1999-09-17  |  3KB  |  137 lines

  1. /*
  2.  * include/linux/nfsd/syscall.h
  3.  *
  4.  * This file holds all declarations for the knfsd syscall interface.
  5.  *
  6.  * Copyright (C) 1995 Olaf Kirch <okir@monad.swb.de>
  7.  */
  8.  
  9. #ifndef NFSD_SYSCALL_H
  10. #define NFSD_SYSCALL_H
  11.  
  12. #include <linux/config.h>
  13. #include <linux/types.h>
  14. #include <linux/socket.h>
  15. #include <linux/posix_types.h>
  16. #include <linux/nfsd/const.h>
  17. #include <linux/nfsd/export.h>
  18. #include <linux/nfsd/nfsfh.h>
  19. #include <linux/nfsd/auth.h>
  20.  
  21. /*
  22.  * Version of the syscall interface
  23.  */
  24. #define NFSCTL_VERSION        0x0201
  25.  
  26. /*
  27.  * These are the commands understood by nfsctl().
  28.  */
  29. #define NFSCTL_SVC        0    /* This is a server process. */
  30. #define NFSCTL_ADDCLIENT    1    /* Add an NFS client. */
  31. #define NFSCTL_DELCLIENT    2    /* Remove an NFS client. */
  32. #define NFSCTL_EXPORT        3    /* export a file system. */
  33. #define NFSCTL_UNEXPORT        4    /* unexport a file system. */
  34. #define NFSCTL_UGIDUPDATE    5    /* update a client's uid/gid map. */
  35. #define NFSCTL_GETFH        6    /* get an fh by ino (used by mountd) */
  36. #define NFSCTL_GETFD        7    /* get an fh by path (used by mountd) */
  37.  
  38. /* SVC */
  39. struct nfsctl_svc {
  40.     unsigned short        svc_port;
  41.     int            svc_nthreads;
  42. };
  43.  
  44. /* ADDCLIENT/DELCLIENT */
  45. struct nfsctl_client {
  46.     char            cl_ident[NFSCLNT_IDMAX+1];
  47.     int            cl_naddr;
  48.     struct in_addr        cl_addrlist[NFSCLNT_ADDRMAX];
  49.     int            cl_fhkeytype;
  50.     int            cl_fhkeylen;
  51.     unsigned char        cl_fhkey[NFSCLNT_KEYMAX];
  52. };
  53.  
  54. /* EXPORT/UNEXPORT */
  55. struct nfsctl_export {
  56.     char            ex_client[NFSCLNT_IDMAX+1];
  57.     char            ex_path[NFS_MAXPATHLEN+1];
  58.     __kernel_dev_t        ex_dev;
  59.     __kernel_ino_t        ex_ino;
  60.     int            ex_flags;
  61.     __kernel_uid_t        ex_anon_uid;
  62.     __kernel_gid_t        ex_anon_gid;
  63. };
  64.  
  65. /* UGIDUPDATE */
  66. struct nfsctl_uidmap {
  67.     char *            ug_ident;
  68.     __kernel_uid_t        ug_uidbase;
  69.     int            ug_uidlen;
  70.     __kernel_uid_t *    ug_udimap;
  71.     __kernel_gid_t        ug_gidbase;
  72.     int            ug_gidlen;
  73.     __kernel_gid_t *    ug_gdimap;
  74. };
  75.  
  76. /* GETFH */
  77. struct nfsctl_fhparm {
  78.     struct sockaddr        gf_addr;
  79.     __kernel_dev_t        gf_dev;
  80.     __kernel_ino_t        gf_ino;
  81.     int            gf_version;
  82. };
  83.  
  84. /* GETFD */
  85. struct nfsctl_fdparm {
  86.     struct sockaddr        gd_addr;
  87.     char            gd_path[NFS_MAXPATHLEN+1];
  88.     int            gd_version;
  89. };
  90.  
  91. /*
  92.  * This is the argument union.
  93.  */
  94. struct nfsctl_arg {
  95.     int            ca_version;    /* safeguard */
  96.     union {
  97.         struct nfsctl_svc    u_svc;
  98.         struct nfsctl_client    u_client;
  99.         struct nfsctl_export    u_export;
  100.         struct nfsctl_uidmap    u_umap;
  101.         struct nfsctl_fhparm    u_getfh;
  102.         struct nfsctl_fdparm    u_getfd;
  103.         unsigned int        u_debug;
  104.     } u;
  105. #define ca_svc        u.u_svc
  106. #define ca_client    u.u_client
  107. #define ca_export    u.u_export
  108. #define ca_umap        u.u_umap
  109. #define ca_getfh    u.u_getfh
  110. #define ca_getfd    u.u_getfd
  111. #define ca_authd    u.u_authd
  112. #define ca_debug    u.u_debug
  113. };
  114.  
  115. union nfsctl_res {
  116.     struct knfs_fh        cr_getfh;
  117.     unsigned int        cr_debug;
  118. };
  119.  
  120. #ifdef __KERNEL__
  121. /*
  122.  * Kernel syscall implementation.
  123.  */
  124. #if defined(CONFIG_NFSD) || defined(CONFIG_NFSD_MODULE)
  125. extern asmlinkage int    sys_nfsservctl(int, void *, void *);
  126. #else
  127. #define sys_nfsservctl        sys_ni_syscall
  128. #endif
  129. extern int        exp_addclient(struct nfsctl_client *ncp);
  130. extern int        exp_delclient(struct nfsctl_client *ncp);
  131. extern int        exp_export(struct nfsctl_export *nxp);
  132. extern int        exp_unexport(struct nfsctl_export *nxp);
  133.  
  134. #endif /* __KERNEL__ */
  135.  
  136. #endif /* NFSD_SYSCALL_H */
  137.